import { useEffect, useRef } from "react";

const useDebounce = (callBack, delay) => {
    //创建一个ref对象，用来存储定时器
    const timer = useRef(null);

    //在组件卸载的时候，清除定时器
    useEffect(() => {
        return () => {
            if (timer.current) {
                clearTimeout(timer.current);
            }
        };
    });

    //返回一个函数，用来执行回调
    return (...arg) => {
        //清除之前的定时器
        if (timer.current) {
            clearTimeout(timer.current);
        }
        //创建一个新的定时器
        timer.current = setTimeout(() => {
            //执行回调函数,传入参数
            callBack(...arg);
        }, delay);
    };
};

export default useDebounce;
